home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-02-19 | 8.3 KB | 305 lines | [TEXT/MPS ] |
- #
- # File: BuildOpenDocPart
- #
- # Contains: Build script for OpenDoc® Sample Code parts.
- #
- # Written by: Steve Smith
- #
- # Copyright: © 1995 by Apple Computer, Inc., all rights reserved.
- #
-
- if "{OpenDocBuildSupportDir}" == ""
- Echo
- Echo "### Error: The “UserStartup•OpenDoc” script has not been executed."
- Echo "### Please verify that the script is installed properly and restart"
- Echo "### the MPW shell application."
- exit 1
- end
-
- if {#} == 0
- Echo
- Echo "Usage: BuildOpenDocPart -f <makefile> -b <compiler(s)> [options]*"
- Echo
- Echo " <compiler(s)> = compiler<1>,…compiler<n>"
- Echo
- Echo " 'Idl' to generate .[x]h, .[x]ih, and .c[pp] files"
- Echo " 'PubIdl' to generate public .[x]h files"
- Echo " 'Rez' to generate MPW and MW project .rsrc files"
- Echo " 'SCpp' to build part with SCpp"
- Echo " 'SC' to build part with SC"
- Echo " 'MrCpp' to build part with MrCpp"
- Echo " 'MrC' to build part with MrC"
- Echo " 'SMrCpp' to build part with SMrCpp"
- Echo " 'SMrC' to build part with SMrC"
- Echo
- Echo "Options:"
- Echo " -fat # merge the 68k and PPC shared libraries"
- Echo " -k # rebuild all source files"
- Echo " -cvi # display CFM version information"
- Echo " -noPCH # don't compile code using precompiled headers"
- Echo " -noDBG # compile with sym/macsbug options off"
- Echo " -toco <opt> # temporarily override compiler option"
- Echo ' (ie. -toco "-d OptimizationOption=speed")'
- Echo
- exit 1
- end
-
- set debug 0 #DEGUG
- set saveSensitive "{CaseSensitive}"
- set CaseSensitive 0
- alias turnCaseSensitiveOn "set CaseSensitive ∂"∂{saveSensitive∂}∂""
-
- set buildType ""
- set fullBuild ""
- set nopch ""
- set TempCompilerOverride ""
- set fatFlag ""
- set PrivateHeaders "-d PrivateHeadersFlag=∂"-p∂""
- set infoFlag ""
- set nonDebugFlags ""
-
- for parm in {"Parameters"}
- if {grabMakeFile}
- set makefile "{parm}"
- set grabMakeFile 0
- else if {grabOption}
- set TempCompilerOverride "{parm}"
- set grabOption 0
- else if {grabCompiler}
- set buildtype {parm}
- set buildtype "`echo "{buildtype}" | streamedit -e '/,/ Replace /,/ " " -c ∞'`"
- set grabCompiler 0
- else if "{parm}" =~ /-b/
- set grabCompiler 1
- else if "{parm}" =~ /-fat/
- set fatFlag {parm}
- else if "{parm}" =~ /-nopch/
- set nopch {parm}
- else if "{parm}" =~ /-nodbg/
- set nonDebugFlags "-d SymOption=off -d MacsbugOption=off -d WarningOption='-w 17 -d _RETAIL=1'"
- else if "{parm}" =~ /-toco/
- set grabOption 1
- else if "{parm}" =~ /-cvi/
- set infoFlag {parm}
- else if "{parm}" =~ /-everything/
- set fullBuild '-e'
- set killObjects ""
- else if "{parm}" =~ /-k/
- if "{fullBuild}" == ""
- set killObjects {parm}
- end
- else if "{parm}" =~ /-f/
- set grabMakeFile 1
- else
- Echo ""
- Echo "Error: Invalid parameter [{parm}]"
- Echo ""
- turnCaseSensitiveOn
- Exit 1
- end
- end
-
- if "{makefile}" == ""
- Echo ""
- Echo "Error: No make file was specified!!"
- Echo ""
- turnCaseSensitiveOn
- Exit 1
- end
-
- set dirpath "`files -q -f "{makefile}"`"
- ( evaluate "{dirpath}" =~ /(?+:)®1?+/ ) ∑∑ dev:null
- set projectDir "{®1}"
- unset ®1
-
- if "{nopch}" == ""
- set PrecompiledHeaders "-f ∂"{OpenDocBuildSupportDir}SCPCHeaders.make∂""
- else
- set PrecompiledHeaders "-d CppPrecompiledHeaders=∂"∂" -d CPrecompiledHeaders=∂"∂""
- end
-
- # --- Tool Info --- #
-
- alias ToolInfo 'set vstr "`VersionList -v -h -raw {toolName}`"; ∂
- (evaluate "{vstr}" =~ /(?+)®1 (?+)®2 ?+/) ∑∑ dev:null; ∂
- Echo " {®1}, version {®2}"'
-
- # --- Run each compiler requested --- #
-
- for compiler in {buildType}
-
- if ( {debug} == 1 ) # DEBUG
- echo ">>compiler: {compiler}"
- end
-
- set buildTarget ""
- set where ""
- set linker ""
-
- # --- Execute Make to Generate Build Commands --- #
-
- Echo
- Echo ===========================================================
- Echo Build Started (`date`)
- Echo –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
-
- if "{compiler}" =~ /idl/
- set compiler "somipc"
- set BuildTarget BUILDIDL
- if "{killObjects}" != ""
- set fullBuild '-e'
- set killObjects ""
- end
-
- else if "{compiler}" =~ /pubidl/
- set compiler "somipc"
- set BuildTarget BUILDPUBIDL
- set PrivateHeaders "-d PrivateHeadersFlag=∂"∂""
- if "{killObjects}" != ""
- set fullBuild '-e'
- set killObjects ""
- end
-
- else if "{compiler}" =~ /rez/
- set BuildTarget BUILDREZ
- if "{killObjects}" != ""
- set fullBuild '-e'
- set killObjects ""
- end
-
- else if "{compiler}" =~ /[s]*mrc[p]*/
- set BuildTarget BUILDPPCLINK
- set Where "{compiler}:"
- set linker "ppclink"
-
- else if "{compiler}" =~ /mcc/
- set BuildTarget BUILDPPCLINK
- set Where "{compiler}:"
- set linker "ppclink"
- set PrecompiledHeaders "-d CppPrecompiledHeaders=∂"∂" -d CPrecompiledHeaders=∂"∂""
-
- else if "{compiler}" =~ /sc[p]*/
- set BuildTarget BUILDILINK
- set Where "{compiler}:"
- set linker "ilink"
-
- else
- # no compiler was specified, so exit quietly.
- break
- end
-
- # --- Create Object Folders and Kill Objects --- #
-
- if ( {debug} == 0 )
- set exit 0
- (newfolder "{projectDir}Objects:") ∑∑ dev:null
- (newfolder "{projectDir}Objects:{Where}") ∑∑ dev:null
- if "{fullBuild}" == "" && "{killObjects}" != ""
- (delete -i -n "{projectDir}Objects:{Where}"≈.o) ∑∑ dev:null
- (delete -i -n "{projectDir}Objects:{Where}"≈.seg) ∑∑ dev:null
- (delete -i -n "{projectDir}Objects:{Where}"≈.seg.NJ) ∑∑ dev:null
- (delete -i -n "{projectDir}Objects:{Where}"≈.xcoff) ∑∑ dev:null
- (delete -i -n "{projectDir}Objects:{Where}"≈.dump) ∑∑ dev:null
- end
- set exit 1
- end
-
- # --- Generate build commands --- #
-
- Make {BuildTarget} ∂
- {fullBuild} ∂
- -d SampleCodeProjectDir="{projectDir}" ∂
- -d BuildSupportDir="{OpenDocBuildSupportDir}" ∂
- -d ObjectsDir="{projectDir}Objects:{Where}" ∂
- -f "{OpenDocBuildSupportDir}Variables.make" ∂
- {PrecompiledHeaders} ∂
- -f "{OpenDocBuildSupportDir}OpenDocUtils.make" ∂
- -f "{OpenDocBuildSupportDir}{compiler}Vars.make"∂
- -f "{OpenDocBuildSupportDir}DefaultRules.make" ∂
- {TempCompilerOverride} ∂
- {nonDebugFlags} ∂
- {PrivateHeaders} ∂
- -f "{makefile}" > "{projectDir}Objects:make.out"
-
- # --- Execute Generated Build Commands --- #
-
- if ( `count -l "{projectDir}Objects:make.out"` > 0 )
- set toolName {compiler}
- Echo "Tools:`ToolInfo`"
- if ( "{linker}" != "" )
- set toolName {linker}
- Echo " `ToolInfo`"
- end
- Echo –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
-
- if ( {debug} == 0 )
- "{projectDir}Objects:make.out"
- else #DEBUG
- rename "{projectDir}Objects:make.out" "{projectDir}Objects:make.out.{compiler}"
- Echo '#Debug On#'
- Echo Open "'{projectDir}Objects:make.out.{compiler}'"
- end
-
- turnCaseSensitiveOn
-
- Echo –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
- end
-
- Echo Build Completed (`date`)
- Echo -----------------------------------------------------------
-
- end
-
- # --- If specified, merge output into FAT library --- #
-
- if "{fatFlag}" =~ /-fat/
- Echo
- Echo ===========================================================
- Echo Build Started (`date`)
- Echo –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
- Echo 'if {buildAnyway} == 1' > "{projectDir}Objects:make.out"
- Make BUILDFATLIB ∂
- -d SampleCodeProjectDir="{projectDir}" ∂
- -d BuildSupportDir="{OpenDocBuildSupportDir}" ∂
- -d ObjectsDir="{projectDir}Objects:" ∂
- -d MakeFat="{OpenDocBuildSupportDir}MakeFat" ∂
- -d CppPrecompiledHeaders="" ∂
- -d CPrecompiledHeaders="" ∂
- -f "{OpenDocBuildSupportDir}Variables.make" ∂
- -f "{makefile}" ∂
- -f "{OpenDocBuildSupportDir}MakeFATRules.make" ∂
- >> "{projectDir}Objects:make.out"
-
- "{projectDir}Objects:make.out"
- Echo –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
- Echo Build Completed (`date`)
- Echo -----------------------------------------------------------
- end
-
- # --- If specified, retrieve relevant CFM version information --- #
-
- if "{infoFlag}" =~ /-cvi/
- set exit 0
- set stuff "`files -f -t rsrc "{projectDir}Objects:" ≥≥ dev:null`"
- for targFile in {stuff}
- end
- if ( "{targFile}" == "" )
- set stuff "`files -f -t shlb "{projectDir}" ≥≥ dev:null`"
- for targFile in {stuff}
- end
- if ( "{targFile}" == "" )
- Echo "# Error: Perform a build before executing this command."
- Exit 1
- end
- end
- set cvn "`dumppef -do r "{targFile}" ≥≥ dev:null | ∂
- streamedit -e '/ (?+)®1,?+currentVersion?+∂(([0-9]+)®2∂)/ Set x ®2" ["®1"]"; ∞ Print x; /?+/ Delete'`"
- set odv "`dumppef -do r "{targFile}" ≥≥ dev:null | ∂
- streamedit -e '/ (?+)®1,?+oldDefVersion?+∂(([0-9]+)®2∂)/ Set x ®2" ["®1"]"; ∞ Print x; /?+/ Delete'`"
- set exit 1
- Echo
- Echo ">> CFM current version = {cvn}"
- Echo ">> CFM old definition version = {odv}"
- Echo
- end
-